﻿// using System;
// using System.Threading.Tasks;
// using MQTTnet;
// using MQTTnet.Client;
// using MQTTnet.Client.Options;
//
// namespace scanner
// {
//     public static class MqttHelper
//     {
//         private static IMqttClient? _client;
//         private static IMqttClientOptions? _options;
//         private static readonly object _lock = new();
//
//         /// <summary>
//         /// 初始化 MQTT 长连接
//         /// </summary>
//         public static async Task Init(string connString)
//         {
//             if (string.IsNullOrWhiteSpace(connString))
//                 throw new ArgumentException("MQTT 连接字符串不能为空", nameof(connString));
//
//             var parts = connString.Split(':');
//             if (parts.Length < 4)
//                 throw new ArgumentException("MQTT 连接字符串格式错误，应为 host:port:username:password", nameof(connString));
//
//             string host = parts[0];
//             if (!int.TryParse(parts[1], out int port))
//                 throw new ArgumentException("MQTT 端口格式错误", nameof(connString));
//
//             string username = parts[2];
//             string password = parts[3];
//
//             var factory = new MqttFactory();
//             _client = factory.CreateMqttClient();
//
//             _options = new MqttClientOptionsBuilder()
//                 .WithTcpServer(host, port)
//                 .WithCredentials(username, password)
//                 .WithCleanSession()
//                 .Build();
//
//             _client.UseDisconnectedHandler(async e =>
//             {
//                 Console.WriteLine("MQTT 断开连接，尝试重连...");
//                 await Task.Delay(TimeSpan.FromSeconds(5));
//                 try
//                 {
//                     await _client.ConnectAsync(_options);
//                     Console.WriteLine("MQTT 重连成功");
//                 }
//                 catch (Exception ex)
//                 {
//                     Console.WriteLine($"MQTT 重连失败: {ex.Message}");
//                 }
//             });
//
//             await _client.ConnectAsync(_options);
//             Console.WriteLine("MQTT 长连接已建立");
//         }
//
//         /// <summary>
//         /// 发布消息（长连接模式）
//         /// </summary>
//         public static async Task Publish(string topic, string payload)
//         {
//             if (_client == null || !_client.IsConnected)
//                 throw new InvalidOperationException("MQTT 客户端未连接");
//
//             var message = new MqttApplicationMessageBuilder()
//                 .WithTopic(topic)
//                 .WithPayload(payload)
//                 .WithAtLeastOnceQoS()
//                 .Build();
//
//             await _client.PublishAsync(message);
//         }
//     }
// }